Scripting > CxCvs > CxCvs Examples

CxCvs Examples

The following example gets a single value for point RD_SYCMDSTAT from [5410]MYSITE.UIS.

'Enum CxValueType

Const typeDouble = 3

Const typeLong = 2

Const typeString = 1

 

'Enum CxTimeStampType

Const typeFILETIME = 1

Const typeUTC = 2

 

Dim CvsL,CvsR,res,GetReq,GetReqResp,RtREx, SetRtrExReq, objRtrEx

Dim Rval,Lvali,Lvalii,resii

 

' CxCvs Objects

Set CvsL = CreateObject("CxCvs.CvsClient")

Set CvsR = CreateObject("CxCvs.CvsClient")

Set GetReq = CreateObject("CxCvsLib.GetNamedRtRexReq")

Set GetReqResp = CreateObject("CxCvsLib.GetNamedRtRExResp")

Set RtREX = CreateObject("CxCvsLib.RtREx")

Set SetRtrExReq = CreateObject("CxCvsLib.SetRtRExReq")

Set objRtrEx = CreateObject("CxCvsLib.RtrEx")

Dim objCvsClient : Set objCvsClient = CreateObject("CxCvsLib.CvsClient")

 

Dim strSITE : strSITE = "[5410]MYSITE.UIS"

Dim strLongPoint : strLongPoint = "RD_SYCMDSTAT"

Dim dblValue : dblValue = 0.0

Dim datTimeStamp : datTimeStamp = Now()

Dim intStatus : intStatus = 0

 

Sub CxCvsExample1()

 

' Connect to a remote UIS

 

res = CvsR.Connect(strSITE)

 

If(Not res)Then ' 0 is "Connected"

 

' We're connected, so let's go

' We're grabbing a single value (1 value)

GetReq.Count = 1

GetReq.PointIdLong(0) = strLongPoint

GetReq.TimeStampType = typeUTC

 

res = CvsR.GetNamedRtREx(GetReq,GetReqResp)

 

If(Not res)Then ' 0 is "Success"

 

dblValue = GetReqResp.RtRex(0).Value

datTimeStamp = GetReqResp.RtREx(0).TimeStamp

intStatus = GetReqResp.RtREx(0).Status

 

' you could do whatever you want with these variables...

MsgBox "Point = " & CStr(strLongPoint) & vbCrLf & _

"Value = " & CStr(dblValue) & vbCrLf & _

"TimeStamp = " & CStr(datTimeStamp) & vbCrLf & _

"Status = " & CStr(intStatus)

 

Else

 

MsgBox "Failed to grab the value..."

 

End If

 

Else

 

MsgBox "Failed to connect to service...exiting"

Exit Sub

 

End If

 

MsgBox "Done with example 1"

 

End Sub

 

Call CxCvsExample1()

The following example sets a point value.

'Enum CxValueType

Const typeDouble = 3

Const typeLong = 2

Const typeString = 1

 

'Enum CxTimeStampType

Const typeFILETIME = 1

Const typeUCT = 2

 

Dim objCvsClient

Set objCvsClient = CreateObject("CxCvsLib.CvsClient")

 

On Error Resume Next

Dim iRet

'iRet = objCvsClient.Connect("[5411]MYSITE.UIS")

'iRet = objCvsClient.Connect("[5410]WESC.UIS")

iRet = objCvsClient.Connect("[5410]MYSITE.UIS")

 

If Err.Number <> 0 Then

WScript.Echo "Connect error: " & Err.Description

Else

 

Dim arrPointIdLong

' arrPointIdLong = Array("100_AAAA", _

' "90210_WCOND", _

' "90210_WFEELSLK", _

' "90210_WLOC")

 

arrPointIdLong = Array("RD_SYCMDSTAT", "RD_SYCSAPRT")

 

On Error Goto 0

 

Dim setRtrExReq

Set setRtrExReq = CreateObject("CxCvsLib.SetRtRExReq")

 

setRtrExReq.TimeStampType = typeUCT

 

Dim objRtrEx

Set objRtrEx = CreateObject("CxCvsLib.RtrEx")

 

Const iVALUE_CNT = 10000

Dim iValueStep

 

Dim iRecordCount : iRecordCount = 0

 

Dim strLongId

For Each strLongId In arrPointIdLong

 

objRtrEx.PointIdLong = strLongId

 

For iValueStep = 1 To iVALUE_CNT

Dim strValue

strValue = FormatCygNetValue(iValueStep, 2)

 

objRtrEx.Status = 3 ' status of 3 sets the "updated" and "initialized" bits

objRtrEx.UserStatus = 0

 

' not setting the time results in current client time to the millisecond

'objRtrEx.TimeStampType = typeUCT

'objRtrEx.TimeStamp = Now()

 

objRtrEx.ValueType = typeString

objRtrEx.Value = strValue

 

setRtrExReq.RtrEx(iRecordCount) = objRtrEx

 

iRecordCount = iRecordCount + 1

setRtrExReq.RecordCount = iRecordCount

 

If iRecordCount >= setRtrExReq.Count Then

Call SendValues(setRtrExReq)

iRecordCount = 0

End If

Next

 

Next

 

If iRecordCount > 0 Then

Call SendValues(setRtrExReq)

iRecordCount = 0

End If

 

End If

 

Function FormatCygNetValue(dValue, iDecimalPlaces)

Dim strValuePad : strValuePad = " " ' 16 spaces

 

Dim strCygNetValue

strCygNetValue = FormatNumber(dValue, iDecimalPlaces, False, False, False)

 

strCygNetValue = _

Left(strValuePad, Len(strValuePad)-Len(strCygNetValue)) & strCygNetValue

 

FormatCygNetValue = strCygNetValue

End Function

 

Function SendValues(ByRef setRtrExReq)

SendValues = True

 

Dim setRtrExResp

Set setRtrExResp = CreateObject("CxCvsLib.SetRtRExResp")

 

Dim iRetryCount : iRetryCount = 10

 

Do While iRetryCount > 0

iRet = objCvsClient.SetRtREx(setRtrExReq, setRtrExResp)

 

If iRet = 0 and setRtrExResp.Error = 11001 Then

' CVS setpoint queue is full so give it a chance to drain

iRetryCount = iRetryCount -1

WScript.Echo "SetPoint queue full (" & iRetryCount & ")"

WScript.Sleep 100

Else

iRetryCount = 0

End If

Loop

 

If iRet <> 0 Or setRtrExResp.Error <> 0 Then

SendValues = False

 

'WScript.Echo "SetRtREx error: " & iRet & ", " & setRtrExResp.Error

 

Dim iPointErrorStep

For iPointErrorStep = 0 To setRtrExResp.Count-1

If setRtrExResp.PointError(iPointErrorStep) <> 0 Then

'WScript.Echo "SetRtREx point(" & iPointErrorStep & ") error: " & setRtrExResp.PointError(iPointErrorStep)

End If

Next

End If

End Function

 

MsgBox "Done"

Back to top

Let us know how we can improve this topic.

CygNet at weatherford.com

© 2020 Weatherford. All rights reserved.